package com.funo.main.service.impl;

import java.util.Date;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.funo.common.pojo.PageResult;
import com.funo.common.pojo.QueryCondition;
import com.funo.common.utils.Constant;
import com.funo.main.dao.UserDao;
import com.funo.main.entities.User;
import com.funo.main.service.UserService;

/**
 * 用户管理业务接口实现类
 * 
 * @author zhengjs
 *
 */
@Service
@Transactional
public class UserServiceImpl implements UserService {
	
	@Autowired
	private UserDao userDao;//用户管理DAO
	
	@Override
	public Integer saveUser(User sessionUser,User user) {
	
		Integer type=Constant.STATUS_ABNORMAL;
		
		User userTl=userDao.getUser(user.getLogName());//通过用户名查找用户信息
		
		if(userTl !=null && userTl.getId() !=null){//重复
			type = Constant.STATUS_REPEAT;
		}else{
			user.setId(UUID.randomUUID().toString());//主键ID
			user.setOpUserName(sessionUser.getName());//操作人
			//user.setOrg(org);//机构
			user.setOpTime(new Date());//操作时间
			user.setIsOrgLeader(Constant.ORG_LEADER);//是否部门领导
			user.setIsSysUser(Constant.SYS_USER);//是否系统用户
		
			userDao.save(user);//保存操作

			type = Constant.STATUS_SUSSESS;
		}
		
		return type;
	}

	@Override
	public Integer updateUser(User sessionUser,User userVO) {
		
		Integer type = Constant.STATUS_ABNORMAL;
		
		//通过用户名和主键id，查询用户信息。
		User userTil = userDao.findUserByName(userVO.getLogName(), userVO.getId());
		
		if(userTil !=null && userTil.getId() !=null){//重复
			type = Constant.STATUS_REPEAT;
		}else{
			//通过id，查询用户信息。
			User oldUser = userDao.get(userVO.getId());
			
			oldUser.setLogName(userVO.getLogName());//用户名
			oldUser.setName(userVO.getName());//角色名
			oldUser.setSex(userVO.getSex());//性别
			oldUser.setNation(userVO.getNation());//民族
			oldUser.setNativePlace(userVO.getNativePlace());//籍贯
			oldUser.setMobilePhone(userVO.getMobilePhone());//联系电话
			oldUser.setAccountStatus(userVO.getAccountStatus());//账号状态
			oldUser.setOpUserName(sessionUser.getName());//操作人
			oldUser.setOpTime(new Date());//操作时间

			userDao.update(oldUser);//更新操作
			
			type = Constant.STATUS_SUSSESS;
		}

		return type;
	}

	@Override
	public void deleteUser(User user) {
		userDao.delete(user.getId());
	}

	@Override
	public User getUser(String id) {
		return userDao.get(id);
	}

	@Override
	public PageResult<User> getUserPage(QueryCondition condition) {
		PageResult<User> page = new PageResult<User>();
		page.setList(userDao.pageList(condition));
		page.setTotal(userDao.count(condition));
		return page;
	}
	
	@Override
	public User login(User userVO) {
		User userPO = userDao.findUser(userVO);//查找用户信息		
		return userPO;
	}
}
